package com.lfy.kcat.user.controller;

import cn.dev33.satoken.stp.StpUtil;
import com.lfy.kcat.user.business.UserAuthBizService;
import com.lfy.kcat.user.vo.LoginReqVo;
import com.lfy.kcat.user.vo.LoginRespVo;
import com.lfy.kcat.user.vo.UserInfoRespVo;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 *
 * 用户登录
 *
 * @author leifengyang
 * @version 1.0
 * @date 2025/9/16 11:22
 * @description:
 */
@Slf4j
@RequestMapping("/api")
@RestController
public class UserLoginController {

    @Autowired
    UserAuthBizService userAuthBizService;

    @PostMapping("/login")
    public R login(@RequestBody LoginReqVo loginReqVo){


        LoginRespVo respVo = userAuthBizService.login(loginReqVo);

        return R.ok("登录成功",respVo);
    }


    /**
     * 获取用户信息
     * @return
     */
    @GetMapping("/userinfo")
    public R getInfo(){
        //前端自己带令牌放到请求头，SaToken 只需要从 Authorization 头字段拿到 令牌，
        // 删除 Bearer 前缀，得到原始令牌。 Sa-Token 拿着原始令牌去redis中反查用户
        // 配置令牌的名字 和 前缀和前端对应起来
        long userId = StpUtil.getLoginIdAsLong();
//        String tokenValue = StpUtil.getTokenValue();
        log.info("获取用户信息: 用户id = {}",userId);

        UserInfoRespVo vo = userAuthBizService.getUserInfo(userId);

        return R.ok("获取用户信息成功",vo);
    }

}
